package com.movie.api.service;

import com.movie.api.model.dto.EvaluateRankDto;
import com.movie.api.model.dto.PageDto;
import com.movie.api.model.entity.Film;
import com.movie.api.model.vo.FilmInfoVO;
import com.movie.api.model.vo.PageResultVO;

import java.util.List;
import java.util.Map;

public interface FilmService {

    void save(Film film);

    void deleteById(String id);

    List<Film> findAll();

    List<Film> findByRegionAndType(String region, String type);

    // 获取热门电影
    List<Film> findHots(Integer limit);

    // 根据电影名模糊查询
    List<Film> findLikeName(String name);

    FilmInfoVO findById(String id);

    Film update(Film film);

    List<Film> getFilmByTime(String time);

    void viewAt(Integer filmId);

    List<FilmInfoVO> page(String selectedOption, String searchText);

    PageResultVO pageList(PageDto pageDto);

    // FilmService.java

    /**
     * 根据电影类型，返回电影数量
     *
     * @return
     */
    List<Map<String, Object>> getCountByType();

    /**
     * 根据电影类型，返回电影观看次数
     *
     * @return
     */
    Map<String, Object> getViewCountByType();

    /**
     * 根据近七天每天，返回电影观看次数
     *
     * @return
     */
    Map<String, Object> getViewCountByLastSevenDays();

    /**
     * 统计最近三十天数据（数据报表）
     *
     * @return
     */
    Map<String, Object> getLast30DaysMovieData();

    /**
     * 获取全部时间电影数据（数据报表）
     *
     * @return
     */
    Map<String, Object> getAllDaysMovieData();

    /**
     * 获取好评榜
     *
     * @return
     */
    PageResultVO getEvaluateRank(EvaluateRankDto evaluateRankDto);
}
